from rest_framework import status
from rest_framework.generics import GenericAPIView, CreateAPIView
from users.models import User
from rest_framework.views import APIView, Response
from users.serializers import UserSerializers


# url(r'^usernames/(?P<username>\w{5,20})/count/$', views.UsernameCountView.as_view()),
class UserNameCountView(APIView):
    def get(self, request, username):
        """
        从数据库查询用户的数量
        :param request: get
        :param username: 用户名
        :return: Json
        """
        # 从数据库查询用户数量
        count = User.objects.filter(username=username).count()

        # 将数据转换成字典

        data = {
            'username': username,
            'count': count
        }

        # 返回json响应
        return Response(data)


# GET /url(r'^mobiles/(?p<mobile>1[3,9]\d{9})/count/$')
class MobileCountView(APIView):
    def get(self, request, mobile):
        """
        获取手机用户数量
        # 根据mobile用户的手机号获取数量
        # 返回响应

        #
        """

        # v根据mobile用户的手机号获取数量
        count = User.objects.filter(mobile=mobile).count()

        # 返回响应
        data = {
            'mobile': mobile,
            'count': 'count'
        }

        return Response(data)


# 用户注册
# POST /users/
class UserView(CreateAPIView):
    # 指定视图所使用的序列化器类
    serializer_class = UserSerializers

    # def post(self,request):
    #     """
    #        #     注册用户信息的保存(用户创建):
    #        #     1. 获取参数并进行校验(参数完整性，手机号格式，手机号是否注册，是否同意协议，两次密码是否一致，短信验证码是否正确）
    #        #     2. 创建新用户并保存注册用户的信息
    #        #     3. 将新用户数据序列化返回
    #     """
    #
    #     # 1,获取参数进行校验
    #     serializer = self.get_serializers(data=request.data)
    #     serializer.is_valid(raise_exception=True)
    #
    #     # 2,创建新用户保存注册用户的信息
    #     serializer.save()
    #
    #     # 3,将用户数据序列化返回
    #     return Response(serializer.data,status=status.HTTP_201_CREATED
    #                     )
